/*
 * @Description:
 * @Author: xunzhaotech
 * @Email: luyb@xunzhaotech.com
 * @QQ: 1525572900
 * @Date: 2025-03-03 11:40:37
 * @LastEditTime: 2025-03-24 12:21:16
 * @LastEditors: xunzhaotech
 */
import request from '@/config/axios'

// ERP 产品 VO
export interface ProductVO {
  id: number // 产品编号
  name: string // 产品名称
  productId: string | null // 产品编号
  barCode: string // 产品条码
  categoryId: number // 产品类型编号
  unitId: number // 单位编号
  type?: string // 产品类型：1-成品，2-原材料，3-半成品
  componentsGroup?: any[] // 产品关联的零部件分组
  unitName?: string // 单位名字
  categoryName?: string
  status: number | string | undefined // 产品状态
  standard: string // 产品规格
  remark: string // 产品备注
  expiryDay: number // 保质期天数
  weight: number // 重量（kg）
  purchasePrice: number // 采购价格，单位：元
  salePrice: number // 销售价格，单位：元
  minPrice: number // 最低价格，单位：元
}

// ERP 产品 API
export const ProductApi = {
  // 查询产品分页
  getProductPage: async (params: any) => {
    return await request.get({ url: `/erp/product/page`, params })
  },

  // 查询可关联零部件分页（排除已关联的产品）
  getExcludeProductPage: async (params: any) => {
    return await request.get({ url: `/erp/product/exclude-product-page`, params })
  },

  // 查询产品精简列表
  getProductSimpleList: async () => {
    return await request.get({ url: `/erp/product/simple-list` })
  },
  // 查询产品精简列表
  getProductSimpleListByProductId: async () => {
    return await request.get({ url: `/erp/product-components/simple-list` })
  },
  // 根据产品类型查询产品精简列表 - 成品
  getFinishedProductList: async () => {
    return await request.get({ url: `/erp/product/simple-list`, params: { type: '1' } })
  },
  // 根据产品类型查询产品精简列表 - 零部件
  getComponentsProductList: async () => {
    return await request.get({ url: `/erp/product-components/simple-list`, params: { type: '2' } })
  },
  // 查询产品详情
  getProduct: async (id: number) => {
    return await request.get({ url: `/erp/product/get?id=` + id })
  },

  // 查询产品零部件分页
  getComponentsPage: async (params: any) => {
    return await request.get({ url: `/erp/product/getComponentsPage`, params })
  },

  // 新增产品
  createProduct: async (data: ProductVO) => {
    return await request.post({ url: `/erp/product/create`, data })
  },

  // 修改产品
  updateProduct: async (data: ProductVO) => {
    return await request.put({ url: `/erp/product/update`, data })
  },

  // 关联产品零部件
  associateComponents: async (data: { productId: number; componentIds: number[] }) => {
    return await request.post({ url: `/erp/product/associate-components`, data })
  },

  // 删除产品
  deleteProduct: async (id: number) => {
    return await request.delete({ url: `/erp/product/delete?id=` + id })
  },

  // 导出产品 Excel
  exportProduct: async (params) => {
    return await request.download({ url: `/erp/product/export-excel`, params })
  },

  // 保存产品零部件关联关系
  saveProductComponents: async (data: any) => {
    return await request.post({ url: `/erp/product/saveComponentsRelation`, data })
  }
}
